/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import model.dominio.Aluno;
import model.dominio.Atividade;
import model.dominio.Notas;

/**
 *
 * @author ronan
 */

public class DaoNota {
    //métodos ensinados por Rodrigo
    static final String NEW_LINE = System.getProperty("line.separator");
    static final String ARQUIVO = "BDNota.txt";
    
    public DaoNota() {
        try {
            File f = new File("notas.txt");

            FileWriter fw;
            fw = new FileWriter(f, true);
            PrintWriter pw = new PrintWriter(fw);
            pw.print("");
            pw.flush();
            pw.close();
        } catch (IOException ex) {
            System.out.println("Ocorreu uma falha ao gravar no arquivo, por favor contate o administrador.");
        }
    }
    
    public void cadastrar(Notas nota) {
        
        try {
            File f = new File(ARQUIVO);
            int codigoGerado = 1;
            if (f.exists()) {
                FileReader fr = new FileReader(f);
                LineNumberReader lnr = new LineNumberReader(fr);
                lnr.skip(f.length());
                codigoGerado = lnr.getLineNumber() + 1;
                lnr.close();
            }

            nota.setCodigoNota(codigoGerado);
            FileWriter fw = new FileWriter(f, true);
            PrintWriter pw = new PrintWriter(fw);
            pw.println(nota.toString());
            pw.flush();
            pw.close();


        } catch (IOException ex) {
            System.out.println("Ocorreu uma falha ao gravar no arquivo, por favor contate o administrador.");
        }
    }
    
    public  Notas buscar(String palavraChave) {
        FileReader fr = null;
        try {
            File f = new File(ARQUIVO);
            fr = new FileReader(f);
            BufferedReader bfr = new BufferedReader(fr);

            String linha = "";
            while ((linha = bfr.readLine()) != null) {
                if (linha.contains(palavraChave)) {
                    return new Notas();
                }
            }
        } catch (FileNotFoundException ex) {
            System.out.println("O arquivo com os dados do objeto não existe.");
        } catch (IOException ex) {
            System.out.println("Ocorreu uma falha ao ler o arquivo, por favor contate o administrador.");
        }
        return null;
    }
    
    public ArrayList<Notas> obterListaNotas() {
        FileReader fr = null;
        ArrayList<Notas> notas= new ArrayList<Notas>();
        try {
            File f = new File(ARQUIVO);
            fr = new FileReader(f);
            BufferedReader bfr = new BufferedReader(fr);
            
            String linha = "";
            while ((linha = bfr.readLine()) != null) {
                notas.add(new Notas());
            }
            return notas;
        } catch (FileNotFoundException ex) {
            System.out.println("O arquivo com os dados do objeto não existe.");
        } catch (IOException ex) {
            System.out.println("Ocorreu uma falha ao ler o arquivo, por favor contate o administrador.");
        }
        return null;
    }
    
    public Notas stringToObject(String dados) {
        Notas nota = new Notas();
        String[] dados2 = dados.split("///");
        nota.setCodigoNota(Integer.parseInt(dados2[0]));
        nota.setAluno(new DaoAluno().buscar(dados2[1]));
        Atividade atividade = new Atividade();
        atividade.setCodigoAtividade(Integer.parseInt(dados2[2]));
        nota.setAtividade(atividade);
        nota.setNota(Float.parseFloat(dados2[3]));
        return nota;
    }
    

    
}
